#include "PositionData.h"

namespace binge
{

PositionData::PositionData(void)
{

}

PositionData::~PositionData(void)
{
    objectsPosition.clear();
}

void
PositionData::AddObject(int id)
{
    Vector3 vect;

    objectsId.push_back(id);
    objectsPosition.push_back(vect);
}

void
PositionData::RemoveObject(int id)
{
    int index = GetIndex(id);
    objectsId.erase(objectsId.begin()+index);
    objectsPosition.erase(objectsPosition.begin()+index);
}

Vector3
PositionData::GetPosition(int id)
{
    Vector3 temp;
    int index = GetIndex(id);
    if (index != -1)
    {
        temp = objectsPosition[index];
    }
    return temp;
}

void
PositionData::SetPosition(int id, Vector3 pos)
{
    int index = GetIndex(id);
    if (index != -1)
    {
        objectsPosition[index] = pos;
    }
}

void
PositionData::SetPosition(int id, float x, float y)
{
    int index = GetIndex(id);
    if (index != -1)
    {
        objectsPosition[index].Set(x,y,0);
    }
}

float
PositionData::GetX(int id)
{
    int index = GetIndex(id);
    if (index != -1)
    {
        return objectsPosition[index].GetX();
    }
    return -1;
}

float
PositionData::GetY(int id)
{
    int index = GetIndex(id);
    if (index != -1)
    {
        return objectsPosition[index].GetY();
    }
    return -1;
}

void
PositionData::SetX(int id, float x)
{
    int index = GetIndex(id);
    if (index != -1)
    {
        objectsPosition[index].SetX(x);
    }
}

void
PositionData::SetY(int id, float y)
{
    int index = GetIndex(id);
    if (index != -1)
    {
        objectsPosition[index].SetY(y);
    }
}

} // namespace
